package com.jiepos.mpos.pay;

import java.util.List;
import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;

import com.jiepos.mpos.common.constant.SystemConstant;
import com.jiepos.mpos.common.dao.AppLogTransJnlsDao;
import com.jiepos.mpos.core.util.StringUtils;



/**
 * 标题: 定时查询渠道清算流水未成功的记录
 * 按照5分钟、10分钟、15分钟、30分钟、1小时、2小时查询六次，
 * 若还查不到，结果不更新。
 * 模块: 支付平台 版权: Copyright (c) 2017 江苏杰博实信息技术有限公司
 * @author 张学涛
 * @version 1.0
 * @since 2017年10月9日 下午15:10:57 
 * @history（历次修订内容、修订人、修订时间等）
 */

public class ChannelWithdrawQueryService {
	private static final Logger _log = LoggerFactory.getLogger(ChannelWithdrawQueryService.class);

	@Autowired
	private AppLogTransJnlsPayService appLogTransJnlsPayService;

	@Autowired
	private NoticeService noticeService;
	@Autowired
	private AppLogTransJnlsDao appLogTransJnlsDao;

	public void process() {
		_log.info("定时任务查询渠道清算流水开始:");
		List<Map<String, String>> list = appLogTransJnlsPayService.getLogChnStlList();
		if (!StringUtils.isEmpty(list) && !list.isEmpty()) {
			_log.info("定时任务查询渠道清算流水符合条件交易记录[{}]",list);
			for (int i = 0; i < list.size(); i++) {
				queryService(list.get(i));
			}
		}else{
			_log.warn("定时任务查询渠道清算流水无符合条件交易记录!");
		}
		_log.info("定时任务查询渠道清算流水结束!");
	}

	private void queryService(Map<String, String> reqMap) {
		
		Map<String, String> resqMap = CommonService.getPayServices().get(reqMap.get("trf_channel_id"))
				.queryChannelStlResult(reqMap);
					
		//更新结算流水信息
		appLogTransJnlsDao.updateLogChannelStl(resqMap);
		
		if(SystemConstant.AUDIT_STL_1.equals(resqMap.get("stlst"))){
			//更新交易流水信息
			noticeService.noticeUpdate(resqMap);			
		}else if(SystemConstant.AUDIT_STL_2.equals(resqMap.get("stlst"))){
			//结算失败更新流水
			appLogTransJnlsDao.updateStlMsgFail(resqMap);
		}
		
	}
}
